import type { AxiosRequestConfig } from "axios";
import { useUrlStore } from "@/store";

interface RequestConfig extends AxiosRequestConfig {
  /**
   * 是否是调试模式，如果是调试模式，则不会监控
   */
  debug?: boolean;
}

/**
 * 对HTTP请求的包装，主要是增加了请求记录
 *
 * @param config 请求配置项
 */
export async function httpWrap<T>(config: RequestConfig): Promise<T> {
  return Promise.reject(config);
}

/**
 * 对es的http请求进行了封装，主要是增加了基础URL和认证信息
 *
 * @param config 请求配置
 */
export async function fetchEs(config: RequestConfig): Promise<string> {
  const headers: Record<string, string> = {
    "Content-Type": "application/json; charset=utf-8"
  };

  return httpWrap<string>({
    ...config,
    baseURL: useUrlStore().current,
    headers: {
      ...config.headers,
      ...headers
    },
    responseEncoding: "utf-8",
    responseType: "text"
  });
}
